package org.example.designpatterns.singleton.demo6;

import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * @author Gong.Yang
 * 责任链模式-程序入口
 *
 * 本demo是实际工作中的一个任务的缩略版，
 *
 * 需求描述：
 * 得到一个excel，第一列是会员手机号，第二列是会员id，第三列是渠道信息。
 * 我们需要为excel中的用户进行解绑，但是不不同渠道操作不同。
 *
 * 数据示例（1条）：
 * "18697196815","16983B0X8WX","阿玛尼小程序,阿玛尼会员中心小程序"
 *
 * 传统的是使用switch或者if,存在的问题：
 * 1. 代码冗长 维护难  （重点）
 * 2. 当渠道信息包含多个渠道的时候，switch就不好使了
 *
 * 角色介绍：
 * Main -- 入口程序   进行数据准备
 * UnbinderManager -- 解绑者管理员   调度解绑者进行解绑
 * Unbinder -- 解绑者
 *
 * 此处仅作责任链模式的意会，具体的实现请参照demo-work -> gac -> unbind -> v2
 */
@Slf4j
public class DemoMain {
    static  UnbinderManager manager = new UnbinderManager();
    public static void main(String[] args) {
        List<String[]> data = List.of(); //假如这是从excel中获取到的数据

        //遍历数据
        for (String[] item : data) {

            //校验数据合法
            if (item.length < 3) {
                log.info("【遍历数据】数据不全,item:{}", List.of(item));
                continue;
            }

            //直接让manage解绑
            manager.unbindTask(item[1], item[0], item[2]);//解绑
        }
    }

}
